package com.itheima.config;

import com.itheima.interceptor.LoginHandlerInterceptor;
import com.itheima.json.JacksonObjectMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

import java.util.List;

/**
 * @projectName: kafka
 * @package: com.itheima.config
 * @className: WebConfiguration
 * @author: Eric
 * @description: TODO
 * @date: 2023/9/21 10:47
 * @version: 1.0
 */
@Slf4j
@Configuration
@RequiredArgsConstructor
public class WebConfiguration extends WebMvcConfigurationSupport {
    private final LoginHandlerInterceptor loginHandlerInterceptor;

    public void addInterceptors(InterceptorRegistry registry){
        log.info("拦截器加载...");
        registry.addInterceptor(loginHandlerInterceptor)
                .addPathPatterns("/**")
                .excludePathPatterns("/index/login","/index/index","/index/new","/index/hot","/index/recommend","/index/show","/index/list");
    }

    /**
     * 扩展Spring MVC框架的消息转化器
     * @param converters
     */
    protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        log.info("扩展消息转换器...");
        //创建一个消息转换器对象
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        //需要为消息转换器设置一个对象转换器，对象转换器可以将Java对象序列化为json数据
        converter.setObjectMapper(new JacksonObjectMapper());
        //将自己的消息转化器加入容器中
        converters.add(0, converter);
    }
}
